#19 №46977
# ответ 8
----------------------------------------
#20 №46978
# ответ 6 7
--------------------------------------
#21 №46979
# ответ 5

def f(s,p1,p2,m):
    if s>=21: return m%2==0
    if m==0: return 0

    h = []
    if p2 != '+1': h.append(f(s + 1, '+1', p1, m-1))
    if p2 != '+2': h.append(f(s + 2, '+2', p1, m-1))
    if p2 != '*2': h.append(f(s * 2, '*2', p1, m-1))
    return any(h) if (m-1)%2==0 else all(h)
print('19',[s for s in range(1,21) if f(s,'','',3) and not f(s,'','',1)])
print('20',[s for s in range(1,21) if f(s,'','',4) and not f(s,'','',2)])
print('21',[s for s in range(1,21) if f(s,'','',5) and not f(s,'','',3)and not f(s,'','',1)])

